 //53
    public static int maxSubArray(int[] nums) {
        // f[i]记录的是以nums[i]结尾的最大子序和
        int[] f=new int[nums.length];
        f[0]=nums[0];
        for(int i=1;i<nums.length;i++){
            f[i]=Math.max(f[i-1]+nums[i],nums[i]);
        }
        int max=Integer.MIN_VALUE;
        for(int i=0;i<f.length;i++){
            //System.out.print(f[i]+" ");
            if(f[i]>max){
                max=f[i];
            }
        }
        //System.out.println();
        return max;
    }